package br.edu.granbery.indianostore.action;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.edu.granbery.indianostore.controller.Action;
import br.edu.granbery.indianostore.dao.DaoFactory;
import br.edu.granbery.indianostore.dao.ProdutoDao;
import br.edu.granbery.indianostore.model.Produto;

public class EditarProdutoAction implements Action{

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response)
			throws IOException {	
		String id = request.getParameter("txtId");
		String nome = request.getParameter("txtNome");
		String descricao = request.getParameter("txtDescricao");
		String fornecedor = request.getParameter("txtFornecedor");
		String valor = request.getParameter("txtValor");
		String foto = request.getParameter("txtFoto");
		String estado = request.getParameter("txtEstado");
		RequestDispatcher view;
		if (nome.equals("") || descricao.equals("") || fornecedor.equals("")
				|| valor.equals("") || foto == null || estado.equals("")) {
			request.setAttribute("erro",
					"Preencha todos os campos corretamente");
		} else {
			valor = valor.replace(".", "").replace(",", ".");
			if(valor.contains("R$")){
				valor = valor.substring(2, valor.length());				
			}
			HttpSession sessao = request.getSession(true);
			DaoFactory factory = (DaoFactory) sessao.getAttribute("factory");
			Produto produto = new Produto();
			produto.setId(Integer.parseInt(id));
			produto.setNome(nome);
			produto.setDescricao(descricao);
			produto.setFornecedor(fornecedor);
			produto.setValor(Double.parseDouble(valor));
			produto.setFoto(foto);
			produto.setEstado(estado);
			ProdutoDao produtoDao = factory.getProdutoDao();
			factory.beginTransaction();
			if (produtoDao.atualizar(produto)) {
				request.setAttribute("sucess",
						"Produto editado com sucesso.");
				factory.commit();
				produtoDao.destruir(produto);
				factory.stopTransaction();
			} else {
				request.setAttribute("erro", "Erro ao editar produto.");
				request.setAttribute("nome", produto.getNome());
				request.setAttribute("descricao", produto.getDescricao());
				request.setAttribute("fornecedor", produto.getFornecedor());
				request.setAttribute("valor", produto.getValor());
				request.setAttribute("foto", produto.getFoto());
				request.setAttribute("estado", produto.getEstado());
				if (factory.hasTransaction()) {
					factory.stopTransaction();
				}
			}
		}
		try {
			view = request.getRequestDispatcher("/View/Produto/GerenciarProduto.jsp");
			view.forward(request, response);
		} catch (ServletException ex) {
			Logger.getLogger(CadastrarProdutoAction.class.getName()).log(
					Level.SEVERE, null, ex);
		}
	}
}
